package arithmeticSelf;

import java.util.Arrays;

public class InsertSort {
    public static void main(String[] args) {
        //定义数组--------------------
        int[] arr = new int[10];
        for (int i=0;i<arr.length;i++) {
            arr[i] = (int)(Math.random()*100)+1;
        }
        System.out.println(Arrays.toString(arr));

        //插入排序----------------------
//        for(int i=1;i<arr.length;i++) {  //---------------每次进if往右边挪一位
//            int temp = arr[i];
//            int j;
//            for (j=i-1;j>=0;j--) {
//                if(arr[j]>temp) {
//                    arr[j+1] = arr[j];
//                } else {
//                    break;
//                }
//            }
//            arr[j+1] = temp;
//        }
//        System.out.println(Arrays.toString(arr));

        //------------------------------
//        for(int i=1;i<arr.length;i++) {  //---------------------每次进if往右挪一位  然后temp放进去
//            int temp = arr[i];
//            for (int j=i-1;j>=0;j--) {
//                if(arr[j]>temp) {
//                    arr[j+1] = arr[j];
//                    arr[j] = temp;
//                }
//            }
//        }
//        System.out.println(Arrays.toString(arr));

        //-----------------------------------
//        for(int i=1;i<arr.length;i++) { //---------------每次都交换---
//            int temp = arr[i];
//            for(int j=i-1;j>=0;j--) {
//                if(arr[j]>temp) {
//                    arr[j+1] = arr[j];
//                    arr[j] = temp;
//                } else {
//                    arr[j+1] = temp;  //-----------多余  和上次一样也行  加break可以减少循环次数
//                    break;
//                }
//            }
//        }
//        System.out.println(Arrays.toString(arr));

        //------用数组复制的方式------------------
//        for (int i = 1; i < arr.length; i++) {
//            int index = i;
//            int temp = arr[i];
//            for (int j = i - 1; j >= 0; j--) {
//                if (arr[j] > arr[i]) {
//                    index = j;
//                } else {
//                    break;
//                }
//            }
//            System.arraycopy(arr, index, arr, index + 1, i - index);
//            arr[index] = temp;
//        }
//        System.out.println(Arrays.toString(arr));

        //-----------------------------------
//        for(int i=1;i<arr.length;i++) {---------------------------i和j有关系   第一轮 arr[j+1] 和 arr[i] 是一样的
//            int j;
//            for(j=i-1;j>=0;j--) {
//                if(arr[j]>arr[i]) {
//                    arr[j+1] = arr[j];
//                } else {
//                    break;
//                }
//            }
//            arr[j+1] = arr[i];
//            System.out.println(Arrays.toString(arr));
//        }
//        System.out.println(Arrays.toString(arr));

        //-----------------------

    }
}
